//package websocket.entity.vo;
//
//import gnu.io.SerialPort;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import websocket.exception_.*;
//import websocket.listener.PortListener;
//
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.OutputStream;
//import java.util.Arrays;
//import java.util.TooManyListenersException;
//
///**
// * Created by zsc on 2017/11/30.
// */
//public class SerialPortVo4G {
//
//    private static final Logger log = LoggerFactory.getLogger(SerialPortVo4G.class);
//
//    private String name;
//
//    private SerialPort serialPort;
//
//    public SerialPortVo4G(SerialPort serialPort) {
//        this.serialPort = serialPort;
//    }
//
//    public SerialPort getSerialPort() {
//        return serialPort;
//    }
//
//    public void setSerialPort(SerialPort serialPort) {
//        this.serialPort = serialPort;
//    }
//
//    public String getName() {
//        return name;
//    }
//
//    public void setName(String name) {
//        this.name = name;
//    }
//
//    /**
//     * 往串口发送数据
//     *
//     * @param serialPort 串口对象
//     */
//    public static void sendDataToComPort(SerialPort serialPort, byte[] orders) {
//        OutputStream outputStream = null;
//        try {
//            if (serialPort != null) {
//                outputStream = serialPort.getOutputStream();
//                outputStream.write(orders);
//                outputStream.flush();
//                log.info("往串口【 " + serialPort.getName() + " 】发送数据：" + Arrays.toString(orders) + " 完成...");
//            } else {
//                log.error("gnu.io.SerialPort 为null，取消数据发送...");
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        } finally {
//            if (outputStream != null) {
//                try {
//                    outputStream.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//    }
//
//
//    /**
//     * 发送数据到串口
//     *
//     * @param data
//     * @throws SendDataToSerialPortFailure
//     * @throws SerialPortOutputStreamCloseFailure
//     */
//    public void sendData(byte[] data) throws SendDataToSerialPortFailure, SerialPortOutputStreamCloseFailure {
//        OutputStream out = null;
//        try {
//            out = serialPort.getOutputStream();
//            out.write(data);
//            out.flush();
//        } catch (IOException e) {
//            throw new SendDataToSerialPortFailure();
//        } finally {
//            try {
//                if (out != null) {
//                    out.close();
//                }
//            } catch (IOException e) {
//                throw new SerialPortOutputStreamCloseFailure();
//            }
//        }
//
//    }
//
//    /**
//     * 从串口读取数据
//     *
//     * @return
//     * @throws ReadDataFromSerialPortFailure
//     * @throws SerialPortInputStreamCloseFailure
//     */
//    public byte[] readData() throws SerialPortInputStreamCloseFailure {
//        InputStream in = null;
//        byte[] bytes = null;
//        try {
//            in = serialPort.getInputStream();
//            int buffLength = in.available(); // 获取buffer里的数据长度
//            while (buffLength != 0) {
//                bytes = new byte[buffLength]; // 初始化byte数组为buffer中数据的长度
//                in.read(bytes);
//                buffLength = in.available();
//            }
//        } catch (IOException e) {
//            log.info("{}",e.getMessage());
//        } finally {
//            try {
//                if (in != null) {
//                    in.close();
//                }
//            } catch (IOException e) {
//                throw new SerialPortInputStreamCloseFailure();
//            }
//        }
//        return bytes;
//
//    }
//
//    /**
//     * 绑定监听器
//     *
//     * @param listener
//     * @param sleepTime
//     * @throws TooManyListeners
//     */
//    public void bindListener(PortListener listener, int sleepTime) throws TooManyListeners {
//        try {
//            //设置监听器
//            listener.setSerialPort(this);
//            listener.setSleepTime(sleepTime);
//            // 给串口添加监听器
//            serialPort.addEventListener(listener);
//
//            // 设置当有数据到达时唤醒监听接收线程
//            serialPort.notifyOnDataAvailable(true);
//            // 设置当通信中断时唤醒中断线程
//            serialPort.notifyOnBreakInterrupt(true);
//        } catch (TooManyListenersException e) {
//            throw new TooManyListeners();
//        }
//    }
//
//    /**
//     * 移除串口监听器
//     */
//    public void removeEventListener() {
//        if (serialPort != null) {
//            serialPort.removeEventListener();
//        }
//    }
//
//    /**
//     * 关闭串口
//     */
//    public void closePort() {
//        if (serialPort != null) {
//            serialPort.close();
//        }
//    }
//
//    /**
//     * 关闭串口
//     */
//    public void closePort2(SerialPortVo4G serialPortVo) {
//        if (serialPortVo.getSerialPort() != null) {
//            serialPortVo.getSerialPort().close();
//        }
//    }
//}
